package JZ.JZ51;

/**
 * @author corn
 * @create 2020-08-18-21:32
 */

/**
 * JZ51 构建乘积数组(当前点不参与乘积)
 * 题目描述
 * 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],
 * 其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。
 * 不能使用除法。（注意：规定B[0] = A[1] * A[2] * ... * A[n-1]，B[n-1] = A[0] * A[1] * ... * A[n-2];）
 * 对于A长度为1的情况，B无意义，故而无法构建，因此该情况不会存在。
 */
public class Solution {
    public int[] multiply(int[] A) {
        int n = A.length;
        int[] l = new int[n] ,r = new int[n];
        l[0] = 1;
        r[n-1] = 1;
        for(int i = 1 ;i < n ;i++){
            l[i] = l[i-1]*A[i-1];
        }
        for(int i = n-2 ;i >= 0 ;i--){
            r[i] = r[i+1]*A[i+1];
        }
        int[] B = new int[n];
        for(int i = 0 ;i < n ;i++){
            B[i] = l[i]*r[i];
        }
        return B;
    }
}
